<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<unit xmlns="http://www.sdml.info/srcML/src" xmlns:cpp="http://www.sdml.info/srcML/cpp" xmlns:lit="http://www.sdml.info/srcML/literal" xmlns:op="http://www.sdml.info/srcML/operator" xmlns:type="http://www.sdml.info/srcML/modifier" xmlns:pos="http://www.sdml.info/srcML/position" language="C++" filename="small_json_reader.cpp" pos:tabs="8"><cpp:include pos:line="1" pos:column="1">#<cpp:directive pos:line="1" pos:column="2">include</cpp:directive> <cpp:file pos:line="1" pos:column="10">&lt;json/reader.h&gt;</cpp:file></cpp:include>
<cpp:include pos:line="2" pos:column="1">#<cpp:directive pos:line="2" pos:column="2">include</cpp:directive> <cpp:file pos:line="2" pos:column="10">&lt;json/value.h&gt;</cpp:file></cpp:include>
<cpp:include pos:line="3" pos:column="1">#<cpp:directive pos:line="3" pos:column="2">include</cpp:directive> <cpp:file pos:line="3" pos:column="10">&lt;utility&gt;</cpp:file></cpp:include>
<cpp:include pos:line="4" pos:column="1">#<cpp:directive pos:line="4" pos:column="2">include</cpp:directive> <cpp:file pos:line="4" pos:column="10">&lt;cstdio&gt;</cpp:file></cpp:include>
<cpp:include pos:line="5" pos:column="1">#<cpp:directive pos:line="5" pos:column="2">include</cpp:directive> <cpp:file pos:line="5" pos:column="10">&lt;cassert&gt;</cpp:file></cpp:include>
<cpp:include pos:line="6" pos:column="1">#<cpp:directive pos:line="6" pos:column="2">include</cpp:directive> <cpp:file pos:line="6" pos:column="10">&lt;cstring&gt;</cpp:file></cpp:include>
<cpp:include pos:line="7" pos:column="1">#<cpp:directive pos:line="7" pos:column="2">include</cpp:directive> <cpp:file pos:line="7" pos:column="10">&lt;iostream&gt;</cpp:file></cpp:include>
<cpp:include pos:line="8" pos:column="1">#<cpp:directive pos:line="8" pos:column="2">include</cpp:directive> <cpp:file pos:line="8" pos:column="10">&lt;stdexcept&gt;</cpp:file></cpp:include>

<namespace pos:line="10" pos:column="1">namespace <name pos:line="10" pos:column="11">Json</name> <block pos:line="10" pos:column="16">{

<function><type><name pos:line="12" pos:column="1">static</name> <name pos:line="12" pos:column="8">bool</name></type> 
<name pos:line="13" pos:column="1">containsNewLine</name><parameter_list pos:line="13" pos:column="16">( <param><decl><type><name><name pos:line="13" pos:column="18">Reader</name><op:operator pos:line="13" pos:column="24">::</op:operator><name pos:line="13" pos:column="26">Location</name></name></type> <name pos:line="13" pos:column="35">begin</name></decl></param>, 
                 <param><decl><type><name><name pos:line="14" pos:column="18">Reader</name><op:operator pos:line="14" pos:column="24">::</op:operator><name pos:line="14" pos:column="26">Location</name></name></type> <name pos:line="14" pos:column="35">end</name></decl></param> )</parameter_list>
<block pos:line="15" pos:column="1">{
   <for pos:line="16" pos:column="4">for ( <init pos:line="16" pos:column="10">;</init><condition><expr><name pos:line="16" pos:column="11">begin</name> <op:operator pos:line="16" pos:column="17">&lt;</op:operator> <name pos:line="16" pos:column="19">end</name></expr>;</condition> <incr><expr><op:operator pos:line="16" pos:column="24">++</op:operator><name pos:line="16" pos:column="26">begin</name></expr></incr> )
      <if pos:line="17" pos:column="7">if <condition pos:line="17" pos:column="10">( <expr><op:operator pos:line="17" pos:column="12">*</op:operator><name pos:line="17" pos:column="13">begin</name> <op:operator pos:line="17" pos:column="19">==</op:operator> <lit:literal type="char" pos:line="17" pos:column="22">'\n'</lit:literal>  <op:operator pos:line="17" pos:column="28">||</op:operator>  <op:operator pos:line="17" pos:column="32">*</op:operator><name pos:line="17" pos:column="33">begin</name> <op:operator pos:line="17" pos:column="39">==</op:operator> <lit:literal type="char" pos:line="17" pos:column="42">'\r'</lit:literal></expr> )</condition><then pos:line="17" pos:column="48">
         <return pos:line="18" pos:column="10">return <expr><lit:literal type="boolean" pos:line="18" pos:column="17">true</lit:literal></expr>;</return></then></if></for>
   <return pos:line="19" pos:column="4">return <expr><lit:literal type="boolean" pos:line="19" pos:column="11">false</lit:literal></expr>;</return>
}</block></function>

<function><type><name pos:line="22" pos:column="1">static</name> <name><name pos:line="22" pos:column="8">std</name><op:operator pos:line="22" pos:column="11">::</op:operator><name pos:line="22" pos:column="13">string</name></name></type> <name pos:line="22" pos:column="20">codePointToUTF8</name><parameter_list pos:line="22" pos:column="35">(<param><decl><type><name pos:line="22" pos:column="36">unsigned</name> <name pos:line="22" pos:column="45">int</name></type> <name pos:line="22" pos:column="49">cp</name></decl></param>)</parameter_list>
<block pos:line="23" pos:column="1">{
   <decl_stmt><decl><type><name><name pos:line="24" pos:column="4">std</name><op:operator pos:line="24" pos:column="7">::</op:operator><name pos:line="24" pos:column="9">string</name></name></type> <name pos:line="24" pos:column="16">result</name></decl>;</decl_stmt>
   
   <comment type="line" pos:line="26" pos:column="4">// based on description from http://en.wikipedia.org/wiki/UTF-8</comment>

   <if pos:line="28" pos:column="4">if <condition pos:line="28" pos:column="7">(<expr><name pos:line="28" pos:column="8">cp</name> <op:operator pos:line="28" pos:column="11">&lt;=</op:operator> <lit:literal type="number" pos:line="28" pos:column="14">0x7f</lit:literal></expr>)</condition><then pos:line="28" pos:column="19"> 
   <block pos:line="29" pos:column="4">{
      <expr_stmt><expr><name pos:line="30" pos:column="7">result</name><op:operator pos:line="30" pos:column="13">.</op:operator><call><name pos:line="30" pos:column="14">resize</name><argument_list pos:line="30" pos:column="20">(<argument><expr><lit:literal type="number" pos:line="30" pos:column="21">1</lit:literal></expr></argument>)</argument_list></call></expr>;</expr_stmt>
      <expr_stmt><expr><name><name pos:line="31" pos:column="7">result</name><index pos:line="31" pos:column="13">[<expr><lit:literal type="number" pos:line="31" pos:column="14">0</lit:literal></expr>]</index></name> <op:operator pos:line="31" pos:column="17">=</op:operator> <call><name><name pos:line="31" pos:column="19">static_cast</name><argument_list pos:line="31" pos:column="30">&lt;<argument><name pos:line="31" pos:column="31">char</name></argument>&gt;</argument_list></name><argument_list pos:line="31" pos:column="36">(<argument><expr><name pos:line="31" pos:column="37">cp</name></expr></argument>)</argument_list></call></expr>;</expr_stmt>
   }</block></then> 
   <else pos:line="33" pos:column="4">else <if pos:line="33" pos:column="9">if <condition pos:line="33" pos:column="12">(<expr><name pos:line="33" pos:column="13">cp</name> <op:operator pos:line="33" pos:column="16">&lt;=</op:operator> <lit:literal type="number" pos:line="33" pos:column="19">0x7FF</lit:literal></expr>)</condition><then pos:line="33" pos:column="25"> 
   <block pos:line="34" pos:column="4">{
      <expr_stmt><expr><name pos:line="35" pos:column="7">result</name><op:operator pos:line="35" pos:column="13">.</op:operator><call><name pos:line="35" pos:column="14">resize</name><argument_list pos:line="35" pos:column="20">(<argument><expr><lit:literal type="number" pos:line="35" pos:column="21">2</lit:literal></expr></argument>)</argument_list></call></expr>;</expr_stmt>
      <expr_stmt><expr><name><name pos:line="36" pos:column="7">result</name><index pos:line="36" pos:column="13">[<expr><lit:literal type="number" pos:line="36" pos:column="14">1</lit:literal></expr>]</index></name> <op:operator pos:line="36" pos:column="17">=</op:operator> <call><name><name pos:line="36" pos:column="19">static_cast</name><argument_list pos:line="36" pos:column="30">&lt;<argument><name pos:line="36" pos:column="31">char</name></argument>&gt;</argument_list></name><argument_list pos:line="36" pos:column="36">(<argument><expr><lit:literal type="number" pos:line="36" pos:column="37">0x80</lit:literal> <op:operator pos:line="36" pos:column="42">|</op:operator> <op:operator pos:line="36" pos:column="44">(</op:operator><lit:literal type="number" pos:line="36" pos:column="45">0x3f</lit:literal> <op:operator pos:line="36" pos:column="50">&amp;</op:operator> <name pos:line="36" pos:column="52">cp</name><op:operator pos:line="36" pos:column="54">)</op:operator></expr></argument>)</argument_list></call></expr>;</expr_stmt>
      <expr_stmt><expr><name><name pos:line="37" pos:column="7">result</name><index pos:line="37" pos:column="13">[<expr><lit:literal type="number" pos:line="37" pos:column="14">0</lit:literal></expr>]</index></name> <op:operator pos:line="37" pos:column="17">=</op:operator> <call><name><name pos:line="37" pos:column="19">static_cast</name><argument_list pos:line="37" pos:column="30">&lt;<argument><name pos:line="37" pos:column="31">char</name></argument>&gt;</argument_list></name><argument_list pos:line="37" pos:column="36">(<argument><expr><lit:literal type="number" pos:line="37" pos:column="37">0xC0</lit:literal> <op:operator pos:line="37" pos:column="42">|</op:operator> <op:operator pos:line="37" pos:column="44">(</op:operator><lit:literal type="number" pos:line="37" pos:column="45">0x1f</lit:literal> <op:operator pos:line="37" pos:column="50">&amp;</op:operator> <op:operator pos:line="37" pos:column="52">(</op:operator><name pos:line="37" pos:column="53">cp</name> <op:operator pos:line="37" pos:column="56">&gt;&gt;</op:operator> <lit:literal type="number" pos:line="37" pos:column="59">6</lit:literal><op:operator pos:line="37" pos:column="60">)</op:operator><op:operator pos:line="37" pos:column="61">)</op:operator></expr></argument>)</argument_list></call></expr>;</expr_stmt>
   }</block></then> 
   <else pos:line="39" pos:column="4">else <if pos:line="39" pos:column="9">if <condition pos:line="39" pos:column="12">(<expr><name pos:line="39" pos:column="13">cp</name> <op:operator pos:line="39" pos:column="16">&lt;=</op:operator> <lit:literal type="number" pos:line="39" pos:column="19">0xFFFF</lit:literal></expr>)</condition><then pos:line="39" pos:column="26"> 
   <block pos:line="40" pos:column="4">{
      <expr_stmt><expr><name pos:line="41" pos:column="7">result</name><op:operator pos:line="41" pos:column="13">.</op:operator><call><name pos:line="41" pos:column="14">resize</name><argument_list pos:line="41" pos:column="20">(<argument><expr><lit:literal type="number" pos:line="41" pos:column="21">3</lit:literal></expr></argument>)</argument_list></call></expr>;</expr_stmt>
      <expr_stmt><expr><name><name pos:line="42" pos:column="7">result</name><index pos:line="42" pos:column="13">[<expr><lit:literal type="number" pos:line="42" pos:column="14">2</lit:literal></expr>]</index></name> <op:operator pos:line="42" pos:column="17">=</op:operator> <call><name><name pos:line="42" pos:column="19">static_cast</name><argument_list pos:line="42" pos:column="30">&lt;<argument><name pos:line="42" pos:column="31">char</name></argument>&gt;</argument_list></name><argument_list pos:line="42" pos:column="36">(<argument><expr><lit:literal type="number" pos:line="42" pos:column="37">0x80</lit:literal> <op:operator pos:line="42" pos:column="42">|</op:operator> <op:operator pos:line="42" pos:column="44">(</op:operator><lit:literal type="number" pos:line="42" pos:column="45">0x3f</lit:literal> <op:operator pos:line="42" pos:column="50">&amp;</op:operator> <name pos:line="42" pos:column="52">cp</name><op:operator pos:line="42" pos:column="54">)</op:operator></expr></argument>)</argument_list></call></expr>;</expr_stmt>
      <expr_stmt><expr><name><name pos:line="43" pos:column="7">result</name><index pos:line="43" pos:column="13">[<expr><lit:literal type="number" pos:line="43" pos:column="14">1</lit:literal></expr>]</index></name> <op:operator pos:line="43" pos:column="17">=</op:operator> <lit:literal type="number" pos:line="43" pos:column="19">0x80</lit:literal> <op:operator pos:line="43" pos:column="24">|</op:operator> <call><name><name pos:line="43" pos:column="26">static_cast</name><argument_list pos:line="43" pos:column="37">&lt;<argument><name pos:line="43" pos:column="38">char</name></argument>&gt;</argument_list></name><argument_list pos:line="43" pos:column="43">(<argument><expr><op:operator pos:line="43" pos:column="44">(</op:operator><lit:literal type="number" pos:line="43" pos:column="45">0x3f</lit:literal> <op:operator pos:line="43" pos:column="50">&amp;</op:operator> <op:operator pos:line="43" pos:column="52">(</op:operator><name pos:line="43" pos:column="53">cp</name> <op:operator pos:line="43" pos:column="56">&gt;&gt;</op:operator> <lit:literal type="number" pos:line="43" pos:column="59">6</lit:literal><op:operator pos:line="43" pos:column="60">)</op:operator><op:operator pos:line="43" pos:column="61">)</op:operator></expr></argument>)</argument_list></call></expr>;</expr_stmt>
      <expr_stmt><expr><name><name pos:line="44" pos:column="7">result</name><index pos:line="44" pos:column="13">[<expr><lit:literal type="number" pos:line="44" pos:column="14">0</lit:literal></expr>]</index></name> <op:operator pos:line="44" pos:column="17">=</op:operator> <lit:literal type="number" pos:line="44" pos:column="19">0xE0</lit:literal> <op:operator pos:line="44" pos:column="24">|</op:operator> <call><name><name pos:line="44" pos:column="26">static_cast</name><argument_list pos:line="44" pos:column="37">&lt;<argument><name pos:line="44" pos:column="38">char</name></argument>&gt;</argument_list></name><argument_list pos:line="44" pos:column="43">(<argument><expr><op:operator pos:line="44" pos:column="44">(</op:operator><lit:literal type="number" pos:line="44" pos:column="45">0xf</lit:literal> <op:operator pos:line="44" pos:column="49">&amp;</op:operator> <op:operator pos:line="44" pos:column="51">(</op:operator><name pos:line="44" pos:column="52">cp</name> <op:operator pos:line="44" pos:column="55">&gt;&gt;</op:operator> <lit:literal type="number" pos:line="44" pos:column="58">12</lit:literal><op:operator pos:line="44" pos:column="60">)</op:operator><op:operator pos:line="44" pos:column="61">)</op:operator></expr></argument>)</argument_list></call></expr>;</expr_stmt>
   }</block></then>
   <else pos:line="46" pos:column="4">else <if pos:line="46" pos:column="9">if <condition pos:line="46" pos:column="12">(<expr><name pos:line="46" pos:column="13">cp</name> <op:operator pos:line="46" pos:column="16">&lt;=</op:operator> <lit:literal type="number" pos:line="46" pos:column="19">0x10FFFF</lit:literal></expr>)</condition><then pos:line="46" pos:column="28"> 
   <block pos:line="47" pos:column="4">{
      <expr_stmt><expr><name pos:line="48" pos:column="7">result</name><op:operator pos:line="48" pos:column="13">.</op:operator><call><name pos:line="48" pos:column="14">resize</name><argument_list pos:line="48" pos:column="20">(<argument><expr><lit:literal type="number" pos:line="48" pos:column="21">4</lit:literal></expr></argument>)</argument_list></call></expr>;</expr_stmt>
      <expr_stmt><expr><name><name pos:line="49" pos:column="7">result</name><index pos:line="49" pos:column="13">[<expr><lit:literal type="number" pos:line="49" pos:column="14">3</lit:literal></expr>]</index></name> <op:operator pos:line="49" pos:column="17">=</op:operator> <call><name><name pos:line="49" pos:column="19">static_cast</name><argument_list pos:line="49" pos:column="30">&lt;<argument><name pos:line="49" pos:column="31">char</name></argument>&gt;</argument_list></name><argument_list pos:line="49" pos:column="36">(<argument><expr><lit:literal type="number" pos:line="49" pos:column="37">0x80</lit:literal> <op:operator pos:line="49" pos:column="42">|</op:operator> <op:operator pos:line="49" pos:column="44">(</op:operator><lit:literal type="number" pos:line="49" pos:column="45">0x3f</lit:literal> <op:operator pos:line="49" pos:column="50">&amp;</op:operator> <name pos:line="49" pos:column="52">cp</name><op:operator pos:line="49" pos:column="54">)</op:operator></expr></argument>)</argument_list></call></expr>;</expr_stmt>
      <expr_stmt><expr><name><name pos:line="50" pos:column="7">result</name><index pos:line="50" pos:column="13">[<expr><lit:literal type="number" pos:line="50" pos:column="14">2</lit:literal></expr>]</index></name> <op:operator pos:line="50" pos:column="17">=</op:operator> <call><name><name pos:line="50" pos:column="19">static_cast</name><argument_list pos:line="50" pos:column="30">&lt;<argument><name pos:line="50" pos:column="31">char</name></argument>&gt;</argument_list></name><argument_list pos:line="50" pos:column="36">(<argument><expr><lit:literal type="number" pos:line="50" pos:column="37">0x80</lit:literal> <op:operator pos:line="50" pos:column="42">|</op:operator> <op:operator pos:line="50" pos:column="44">(</op:operator><lit:literal type="number" pos:line="50" pos:column="45">0x3f</lit:literal> <op:operator pos:line="50" pos:column="50">&amp;</op:operator> <op:operator pos:line="50" pos:column="52">(</op:operator><name pos:line="50" pos:column="53">cp</name> <op:operator pos:line="50" pos:column="56">&gt;&gt;</op:operator> <lit:literal type="number" pos:line="50" pos:column="59">6</lit:literal><op:operator pos:line="50" pos:column="60">)</op:operator><op:operator pos:line="50" pos:column="61">)</op:operator></expr></argument>)</argument_list></call></expr>;</expr_stmt>
      <expr_stmt><expr><name><name pos:line="51" pos:column="7">result</name><index pos:line="51" pos:column="13">[<expr><lit:literal type="number" pos:line="51" pos:column="14">1</lit:literal></expr>]</index></name> <op:operator pos:line="51" pos:column="17">=</op:operator> <call><name><name pos:line="51" pos:column="19">static_cast</name><argument_list pos:line="51" pos:column="30">&lt;<argument><name pos:line="51" pos:column="31">char</name></argument>&gt;</argument_list></name><argument_list pos:line="51" pos:column="36">(<argument><expr><lit:literal type="number" pos:line="51" pos:column="37">0x80</lit:literal> <op:operator pos:line="51" pos:column="42">|</op:operator> <op:operator pos:line="51" pos:column="44">(</op:operator><lit:literal type="number" pos:line="51" pos:column="45">0x3f</lit:literal> <op:operator pos:line="51" pos:column="50">&amp;</op:operator> <op:operator pos:line="51" pos:column="52">(</op:operator><name pos:line="51" pos:column="53">cp</name> <op:operator pos:line="51" pos:column="56">&gt;&gt;</op:operator> <lit:literal type="number" pos:line="51" pos:column="59">12</lit:literal><op:operator pos:line="51" pos:column="61">)</op:operator><op:operator pos:line="51" pos:column="62">)</op:operator></expr></argument>)</argument_list></call></expr>;</expr_stmt>
      <expr_stmt><expr><name><name pos:line="52" pos:column="7">result</name><index pos:line="52" pos:column="13">[<expr><lit:literal type="number" pos:line="52" pos:column="14">0</lit:literal></expr>]</index></name> <op:operator pos:line="52" pos:column="17">=</op:operator> <call><name><name pos:line="52" pos:column="19">static_cast</name><argument_list pos:line="52" pos:column="30">&lt;<argument><name pos:line="52" pos:column="31">char</name></argument>&gt;</argument_list></name><argument_list pos:line="52" pos:column="36">(<argument><expr><lit:literal type="number" pos:line="52" pos:column="37">0xF0</lit:literal> <op:operator pos:line="52" pos:column="42">|</op:operator> <op:operator pos:line="52" pos:column="44">(</op:operator><lit:literal type="number" pos:line="52" pos:column="45">0x7</lit:literal> <op:operator pos:line="52" pos:column="49">&amp;</op:operator> <op:operator pos:line="52" pos:column="51">(</op:operator><name pos:line="52" pos:column="52">cp</name> <op:operator pos:line="52" pos:column="55">&gt;&gt;</op:operator> <lit:literal type="number" pos:line="52" pos:column="58">18</lit:literal><op:operator pos:line="52" pos:column="60">)</op:operator><op:operator pos:line="52" pos:column="61">)</op:operator></expr></argument>)</argument_list></call></expr>;</expr_stmt>
   }</block></then></if></else></if></else></if></else></if>

   <return pos:line="55" pos:column="4">return <expr><name pos:line="55" pos:column="11">result</name></expr>;</return>
}</block></function>


<comment type="line" pos:line="59" pos:column="1">// Class Reader</comment>
<comment type="line" pos:line="60" pos:column="1">// //////////////////////////////////////////////////////////////////</comment>

<constructor><name><name pos:line="62" pos:column="1">Reader</name><op:operator pos:line="62" pos:column="7">::</op:operator><name pos:line="62" pos:column="9">Reader</name></name><parameter_list pos:line="62" pos:column="15">()</parameter_list>
<block pos:line="63" pos:column="1">{
}</block></constructor>

<function><type><name pos:line="66" pos:column="1">bool</name></type>
<name><name pos:line="67" pos:column="1">Reader</name><op:operator pos:line="67" pos:column="7">::</op:operator><name pos:line="67" pos:column="9">parse</name></name><parameter_list pos:line="67" pos:column="14">( <param><decl><type><name pos:line="67" pos:column="16">const</name> <name><name pos:line="67" pos:column="22">std</name><op:operator pos:line="67" pos:column="25">::</op:operator><name pos:line="67" pos:column="27">string</name></name> <type:modifier pos:line="67" pos:column="34">&amp;</type:modifier></type><name pos:line="67" pos:column="35">document</name></decl></param>, 
               <param><decl><type><name pos:line="68" pos:column="16">Value</name> <type:modifier pos:line="68" pos:column="22">&amp;</type:modifier></type><name pos:line="68" pos:column="23">root</name></decl></param>,
               <param><decl><type><name pos:line="69" pos:column="16">bool</name></type> <name pos:line="69" pos:column="21">collectComments</name></decl></param> )</parameter_list>
<block pos:line="70" pos:column="1">{
   <expr_stmt><expr><name pos:line="71" pos:column="4">document_</name> <op:operator pos:line="71" pos:column="14">=</op:operator> <name pos:line="71" pos:column="16">document</name></expr>;</expr_stmt>
   <decl_stmt><decl><type><name pos:line="72" pos:column="4">const</name> <name pos:line="72" pos:column="10">char</name> <type:modifier pos:line="72" pos:column="15">*</type:modifier></type><name pos:line="72" pos:column="16">begin</name> =<init pos:line="72" pos:column="23"> <expr><name pos:line="72" pos:column="24">document_</name><op:operator pos:line="72" pos:column="33">.</op:operator><call><name pos:line="72" pos:column="34">c_str</name><argument_list pos:line="72" pos:column="39">()</argument_list></call></expr></init></decl>;</decl_stmt>
   <decl_stmt><decl><type><name pos:line="73" pos:column="4">const</name> <name pos:line="73" pos:column="10">char</name> <type:modifier pos:line="73" pos:column="15">*</type:modifier></type><name pos:line="73" pos:column="16">end</name> =<init pos:line="73" pos:column="21"> <expr><name pos:line="73" pos:column="22">begin</name> <op:operator pos:line="73" pos:column="28">+</op:operator> <name pos:line="73" pos:column="30">document_</name><op:operator pos:line="73" pos:column="39">.</op:operator><call><name pos:line="73" pos:column="40">length</name><argument_list pos:line="73" pos:column="46">()</argument_list></call></expr></init></decl>;</decl_stmt>
   <return pos:line="74" pos:column="4">return <expr><call><name pos:line="74" pos:column="11">parse</name><argument_list pos:line="74" pos:column="16">( <argument><expr><name pos:line="74" pos:column="18">begin</name></expr></argument>, <argument><expr><name pos:line="74" pos:column="25">end</name></expr></argument>, <argument><expr><name pos:line="74" pos:column="30">root</name></expr></argument>, <argument><expr><name pos:line="74" pos:column="36">collectComments</name></expr></argument> )</argument_list></call></expr>;</return>
}</block></function>

<function><type><name pos:line="77" pos:column="1">bool</name></type>
<name><name pos:line="78" pos:column="1">Reader</name><op:operator pos:line="78" pos:column="7">::</op:operator><name pos:line="78" pos:column="9">parse</name></name><parameter_list pos:line="78" pos:column="14">( <param><decl><type><name><name pos:line="78" pos:column="16">std</name><op:operator pos:line="78" pos:column="19">::</op:operator><name pos:line="78" pos:column="21">istream</name></name><type:modifier pos:line="78" pos:column="28">&amp;</type:modifier></type> <name pos:line="78" pos:column="30">sin</name></decl></param>,
               <param><decl><type><name pos:line="79" pos:column="16">Value</name> <type:modifier pos:line="79" pos:column="22">&amp;</type:modifier></type><name pos:line="79" pos:column="23">root</name></decl></param>,
               <param><decl><type><name pos:line="80" pos:column="16">bool</name></type> <name pos:line="80" pos:column="21">collectComments</name></decl></param> )</parameter_list>
<block pos:line="81" pos:column="1">{
   <decl_stmt><decl><type><name><name pos:line="82" pos:column="4">std</name><op:operator pos:line="82" pos:column="7">::</op:operator><name pos:line="82" pos:column="9">string</name></name></type> <name pos:line="82" pos:column="16">doc</name></decl>;</decl_stmt>
   <expr_stmt><expr><call><name><name pos:line="83" pos:column="4">std</name><op:operator pos:line="83" pos:column="7">::</op:operator><name pos:line="83" pos:column="9">getline</name></name><argument_list pos:line="83" pos:column="16">(<argument><expr><name pos:line="83" pos:column="17">sin</name></expr></argument>, <argument><expr><name pos:line="83" pos:column="22">doc</name></expr></argument>, <argument><expr><op:operator pos:line="83" pos:column="27">(</op:operator><name pos:line="83" pos:column="28">char</name><op:operator pos:line="83" pos:column="32">)</op:operator><name pos:line="83" pos:column="33">EOF</name></expr></argument>)</argument_list></call></expr>;</expr_stmt>
   <return pos:line="84" pos:column="4">return <expr><call><name pos:line="84" pos:column="11">parse</name><argument_list pos:line="84" pos:column="16">( <argument><expr><name pos:line="84" pos:column="18">doc</name></expr></argument>, <argument><expr><name pos:line="84" pos:column="23">root</name></expr></argument>, <argument><expr><name pos:line="84" pos:column="29">collectComments</name></expr></argument> )</argument_list></call></expr>;</return>
}</block></function>

}</block></namespace> <comment type="line" pos:line="87" pos:column="3">//end of Json namespace</comment>

</unit>
